草庐IT

c++ - Swig -includeall 除了...

全部标签

c# - 垃圾回收应该已经删除了对象,但 WeakReference.IsAlive 仍然返回 true

我有一个我希望通过的测试,但是垃圾收集器的行为并不像我想象的那样:[Test]publicvoidWeakReferenceTest2(){varobj=newobject();varwRef=newWeakReference(obj);wRef.IsAlive.Should().BeTrue();//passesGC.Collect();wRef.IsAlive.Should().BeTrue();//passesobj=null;GC.Collect();wRef.IsAlive.Should().BeFalse();//fails}在这个例子中,obj对象应该被GC,因此我希望W

c# - 通过编写 C dll 来加速 C# 中的数学代码?

我有一个非常大的嵌套for循环,其中对float执行一些乘法和加法。for(inti=0;i这个循环占用了我大部分的处理时间,是一个瓶颈。如果我用C重写这个循环并从C#连接到它,我是否会看到任何速度提升?编辑:我更新了代码以显示s和c是如何生成的。此外,内部循环实际上是从0到i,尽管它可能对问题没有太大影响EDIT2:我在VC++中实现了该算法,并通过dll将其与C#链接,并且在启用所有优化后,速度比C#提高了28%。启用SSE2的论点特别有效。使用MinGW和gcc4.4编译只提供了15%的速度提升。刚刚试用了英特尔编译器,发现这段代码的速度提高了49%。

c# - Release模式下 Console.SetOut 的问题?

我的代码中有一堆Console.WriteLines,我可以在运行时观察它们。我与我也编写的native库进行通信。我想在native库中添加一些printf并观察它们。但是我在运行时看不到它们。我创建了一个复杂的helloworld应用程序来演示我的问题。当应用程序运行时,我可以调试到native库并看到调用了helloworld。但是,输出永远不会出现在文本编写器中。请注意,如果相同的代码作为控制台应用程序运行,则一切正常。C#:[DllImport("native.dll")]staticexternvoidTest();StreamWriterwriter;publicForm

c# - 我如何告诉 Resharper 我的 IEnumerable 方法删除了空值?

给定以下代码,Resharper将正确地警告我foo.Bar上可能存在的NullReferenceException,因为可枚举中可能有空元素:IEnumerablefoos=GetFoos();varbars=foos.Select(foo=>foo.Bar);满足静态分析器的一种方法是显式排除空值:IEnumerablefoos=GetFoos().Where(foo=>foo!=null);我发现自己经常输入.Where(x=>x!=null),所以我将其包装在扩展方法中,现在我可以执行以下操作:IEnumerablefoos=GetFoos().NotNull();问题是Res

c# - 在 C 和 C# 中将 int 提升为 unsigned int

看看这段C代码:intmain(){unsignedinty=10;intx=-2;if(x>y)printf("xisgreater");elseprintf("yisgreater");return0;}/*Output:xisgreater.*/我明白为什么输出的x更大,因为当计算机比较两者时,x被提升为无符号整数类型。当x提升为无符号整数时,-2变为65534,这肯定大于10。但为什么在C#中,等效代码会给出相反的结果?publicstaticvoidMain(String[]args){uinty=10;intx=-2;if(x>y){Console.WriteLine("x

c# - 使用 "greater than or equals"或仅使用 "greater than"

我记得从C天起我们就被鼓励使用i>-1代替i>=0因为性能。这是否仍然适用于C#.NET世界?在当今的编译器中使用其中一种对性能有何影响?即编译器是否足够聪明,可以为您优化这些?(顺便说一句,尝试在StackOverflow的问题字段中输入问题“use>=or>”,看看会发生什么。) 最佳答案 不,没有与比较运算符相关的性能问题。无论如何,任何好的编译器都会优化这种微不足道的东西。我不确定您从哪里得到使用“i>-1”而不是“i>=0”的建议。在x86体系结构上,使用哪一种都没有区别:两种情况都恰好需要两条指令......一条用于比较

c# - 除了 .NET 编程之外,C# 是否还在任何地方使用?

据我了解,尽管C#是由Microsoft创建的,但它是一种编程语言,可以用于或实现.NET编程之外的其他事物。例如,我可以为C#创建一个编译器,以本地x86或其他处理器甚至JVM为目标。我的理解不正确吗?有谁知道C#是否用于.NET以外的任何东西? 最佳答案 C#用于名为“Singularity”的实验性操作系统'这是从头开始写在托管级别的。一个值得关注的有趣项目!编辑:感谢JörgWMittag的评论-Helios实际上是支持卫星内核的Singularity的修改形式,引用self现在正在阅读的论文'Helios是一个操作系统,旨

c# - 比较和交换有什么用?

我最近在读关于CompareAndSwap的文章原子操作(CMPXCHG、.NET的Interlocked.CompareExchange等)。我了解它在内部是如何工作的,以及它是如何从客户那里使用的。我不太明白的是什么时候有人会使用CAS?维基百科说:CASisusedforimplementingsynchronizationprimitiveslikesemaphoresandmutexes,likewisemoresophisticatedlock-freeandwait-freealgorithms.那么,谁能给我一个更通用的真实世界用例,其中包含代码和CAS使用说明?这个问

c# - 以 "1"结尾的变量在 ILSpy 中删除了 "1"。为什么?

为了探索C#编译器如何优化代码,我创建了一个简单的测试应用程序。对于每次测试更改,我都会编译应用程序,然后在ILSpy中打开二进制文件。我刚刚注意到一些对我来说很奇怪的事情。显然这是有意的,但是,我想不出编译器这样做的充分理由。考虑以下代码:staticvoidMain(string[]args){inttest_1=1;inttest_2=0;inttest_3=0;if(test_1==1)Console.Write(1);elseif(test_2==1)Console.Write(1);elseif(test_3==1)Console.Write(2);elseConsole.

c# - 使用 LINQ 对列表进行排序,除了一个条目

我想订购一个字符串列表,但列表中的一个字符串应始终位于开头且未排序。使用LINQ执行此操作的最简单方法是什么?//shouldbeorderedin:first,a,b,u,z:Listl={"z","u","first","b","a"};LINQ中没有prepend方法之类的,是吗? 最佳答案 l=l.OrderBy(i=>i!="first").ThenBy(i=>i).ToList();这里的技巧是根据所讨论的商品是否是您的特殊商品来排序,然后像往常一样根据您的商品排序。既然你说你想要排序列表(使用linq),请不要忘记将查